import request from '@/utils/request'

/**
 * 文件传输API服务
 */

/**
 * 创建文件传输记录
 * @param {Object} data 文件传输数据
 * @returns {Promise} 请求Promise
 */
export function createFileTransfer(data) {
  return request({
    url: '/file/create',
    method: 'post',
    data
  })
}

/**
 * 通过密钥获取文件传输记录
 * @param {String} transferKey 传输密钥
 * @returns {Promise} 请求Promise
 */
export function getFileTransferByKey(transferKey) {
  return request({
    url: `/file/key/${transferKey}`,
    method: 'get'
  })
}

/**
 * 更新文件传输状态
 * @param {Number} id 文件传输ID
 * @param {Number} status 状态
 * @param {Object} receiverInfo 接收者信息（可选）
 * @returns {Promise} 请求Promise
 */
export function updateFileTransferStatus(id, status, receiverInfo = null) {
  const params = { id, status };
  
  // 如果提供了接收者信息，添加到参数中
  if (receiverInfo && receiverInfo.receiverId) {
    params.receiverId = receiverInfo.receiverId;
    params.receiverName = receiverInfo.receiverName;
  }
  
  return request({
    url: '/file/status',
    method: 'put',
    params
  });
}

/**
 * 获取发送的文件传输记录
 * @param {String} senderId 发送者ID
 * @returns {Promise} 请求Promise
 */
export function getSentFiles(senderId) {
  return request({
    url: '/file/sent',
    method: 'get',
    params: {
      senderId
    }
  })
}

/**
 * 获取接收的文件传输记录
 * @param {String} receiverId 接收者ID
 * @returns {Promise} 请求Promise
 */
export function getReceivedFiles(receiverId) {
  return request({
    url: '/file/received',
    method: 'get',
    params: {
      receiverId
    }
  })
}

/**
 * 获取两个设备之间的文件传输记录
 * @param {String} deviceId1 设备ID1
 * @param {String} deviceId2 设备ID2
 * @returns {Promise} 请求Promise
 */
export function getFilesBetween(deviceId1, deviceId2) {
  return request({
    url: '/file/between',
    method: 'get',
    params: {
      deviceId1,
      deviceId2
    }
  })
}

/**
 * 上传文件
 * @param {File} file 文件对象
 * @returns {Promise} 请求Promise
 */
export function uploadFile(file) {
  const formData = new FormData()
  formData.append('file', file)
  
  return request({
    url: '/file/upload',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 下载文件
 * @param {Number} id 文件传输ID
 * @returns {Promise} 请求Promise
 */
export function downloadFile(id) {
  return request({
    url: `/file/download/${id}`,
    method: 'get',
    responseType: 'blob',
    timeout: 60000 // 增加超时时间到60秒
  })
} 